The programmable speaker There has always been some talk around the office about a music box that can be used to make simple sounds, you could even connect it to the circuit network and make simple songs. I put it on my long list of circuit network ideas, and in the past few week it has been coming to life. So today I'll be talking about an exciting new entity coming in 0.15: the Programmable Speaker. It was designed to do two main things: Show configurable GUI alerts and play audio alerts based on circuit conditions. Play audio samples as controlled by the circuit network in a way that simple songs can be created. The entity graphics are placeholder programmer graphics. Let's start with the useful part, it's pretty straightforward. You set your circuit condition, set the sound you want it to make, set whether the sound should be heard in that part of the factory or across the entire map and add an optional GUI alert message. When the circuit condition is true, the speaker will play the selected sound and show the optional GUI alert. You can let the sound play continuously or use simple combinator logic to make the sound at custom intervals. And now that fun part. We knew we wanted the Programmable Speaker to be able to make simple songs. Crazy ideas started to pour in, and it was quickly becoming a full-blown music production DAW with custom synthesizers and control over everything. But this has to be easily controlled by the circuit network without having to build real-time computers with combinators. So in the end I made the Programmable Speaker work as a step sequencer. If you send a circuit network signal pulse, an audio sample will start playing, otherwise nothing will happen. There is no control over the sample length or any special effects, but this means it is quite easy to control it using the circuit network. Enough talk. Here is a demo of a song made using the samples already included. Everything you hear is created inside Factorio. I will leave it to you to analyze the video and figure out how the song is generated. Modders can easily add more audio samples to the entity, including custom alerts. I imagine there will be a voice pack mod that could be programmed using combinators to speak things like "Crude oil is low". I'm sure the Programmable Speaker will be part of some very interesting posts on the Factorio Reddit. There are some other circuit network improvements coming to 0.15, but I will talk more about them in some other FFF. The map download struggle (Technical) For as long as I can remember, our multiplayer map downloader had (among other problems) the problem that it would get stuck at 100%. It was an extremely rare problem some random person would report. We would keep ignoring the bug throwing it in "Pending" or "Duplicates" or "1/0 Magic", but after a few months some other person would report it again. I seem to have a habit of obsessing over these rare "unfixable" bugs (audio mixer crashing, vsync performance issues, non-pixel-perfect sprite drawing), so I started looking into this map downloader issue. First I was looking at the map downloader code itself, thinking surely there is something wrong there. This was a long process because I had no way of reproducing the issue, so it usually involved going back and forth with a person who was experiencing the issue. I would create an executable that would create detailed logs, that person would run the game using that, I would investigate the logs and see that our map downloader works correctly. The I would add more logging and so on. By the time I would reach some kind of conclusion that person would stop answering and probably stop playing Factorio. But near the end thanks to some helpful players, I was able to see what was happening. Looking at the wireshark capture for both the client and the server, it seems that a packet with a specific content or a specific checksum always gets filtered. Some cheeky firewall from the computer, router or ISP is looking inside the packet data and blocking the packets it does not like. No matter how many times I resend that packet, it never gets through, while all the other hundreds of thousands of game and map packets have no problem getting through. Correct me if I'm wrong, but something like this should not be happening. You can read all the details and see the packet data last posts of the forum topic. The issue seems to be resolved if I add one byte of random data to the packet, but I would like to know why is this happening in the first place. If you know what is happening or you know someone that might, please don't hesitate to enlighten us :) This shows how hard it is to make software that "just works" for everyone. There will always be that 0.1% of people who end up having problems that no one could have ever foreseen. Big thanks to admalledd, dadymax, Rippie and the other forum members who helped or are still helping me investigate this odd issue. In other good news, while Rseding91 was also looking at the map download code trying to investigate this problem, he found we had some slow code doing hard drive seeking, slowing down map uploads. He improved it and you should see better map transfer speeds on LAN and high speed connections. As usual, let us know what you think at the forums.
New hope demo levels Klonan A few weeks ago we discussed the changes to the demo and tutorial in the game (FFF-342). One piece of feedback we received after publishing the news was about the old 'New hope' campaign levels, and specifically the 'Abandoned rail base/Broken rail map'. It seems a lot of you in the community really really enjoyed the new hope campaign levels, and several of the team here share the same feelings. After we scrapped the plans for a new campaign and reverted to the old demo, we had initially dismissed the idea to revive the New hope campaign... However due to popular demand... we have decided to bring back the favourites, the first 2 levels of the new hope campaign. This time though, they will also be included in the demo version of the game. This represents a very significant increase in scope for the demo, increasing the demo content to include research, red science, green science, trains, and much more. These levels should be ready for release within a week (but no promises).
Hello, we usually show finished stuff in Friday facts these days, but I personally always liked to have a peek behind the curtains and see the (temporary) mess there. This motivated me to do some kind of overview of how the overall expansion development felt from my perspective. If you are like me, you might appreciate it. Our story starts in February 2021 with FFF-365 when we announced the plan to do the expansion pack.
Dear all, Version 0.16 has become stable, and this means that there is one last step for us to reach the 0.17 which will probably become 1.0 version. Then Factorio will finally step out of the Early Access zone. This will take some months but the roadmap is clear for us. We feel that now is a good time to adjust the price of the game. The price of the game has been growing steadily together with the game becoming bigger, more stable and polished. After careful consideration, we have decided to set the new price of the game to 30 USD (or your regional equivalent). This change will become effective as of the 16th of April 2018. This is the final Factorio price update, unless something unforeseen happens, so it will also be the price for the game for 1.0 release. As you probably know we have a strict no sale policy. The game will not go on sale on Steam or any other platform. This basically means that purchasing before the 16th of April 2018 is the only way to buy the game cheaper than the increased release price.
Happy new year to everyone! We have spent the New Year's Eve with friends in our appartment / office on a last-minute improvized party. The entertainment was provided by the usual elements - food, drinks, chatting and board games. The traditional fireworks all over the Prague kickstarted the 2014, which is going to be a crucial year for Factorio. The main points from the 2014 battle plan are: Get on the Steam. Get the multiplayer done. Get some quality holidays:). After some relaxed time during the Christmas we are back to full speed development. There will be a stable release of the 0.8 in the beginning of the next week. The periods necessary for release stabilization has been getting longer and longer. That was one of the reasons we decided to dedicate more time in the future to the automated testing. You can read more on this topic in our latest random ramblings. Past week has been spent by working on the new features for the 0.9. Mainly the oil industry and blueprints. Both are still in the process of development so I will go into the functional details later, after they are more or less stabilized. You can also read our plans regarding the functionality in that random ramblings post. One thing is clear already. The 0.9 is a very ambitious release and if all goes well it will be one of our most content rich releases (if not the most content rich). After the 0.9 we plan to start working on the multiplayer which might be a long period with little other updates. Therefore we plan to get a lot done before that. In the meantime, Albert has finished with a first set of doo-dads. Below is a composition with some new shipwrecks. Actually the current shipwreck sprite in the first level was cut (and adjusted) from one of our theme art pictures (can you find it:)?). It is time for this one to be replaced. There is still much more that could be (and will be) done for the doo-dads, but now we need to move on to making graphics for the new "oil related" machines ... Comment thread is not hiding anywhere. It is right there on our forum.
Hello, Tomas is in India already, so the place is more empty again. The more empty it is, the harder we have to work to make for it :)
Hello everyone, we have been lucky that the New Years day happens to be on Friday this year. I am happy to wish you all the best for the 2016 both in the real world as well as in your factory worlds. Let the machines work smoothly, the pollution spread slowly and the biters be merciful.
Hi there, fifth anniversary for the Friday Facts is here. Nothing big, but we got into the mood of doing these updates regularly and so far it works fine. The release clock has stopped on 0.7.4. This looks pretty stable though there were still some minor annoyances and rare crashes. So the show goes on and there will be a 0.7.5. That will make the 0.7 a release with most bugfix subreleases so far. Actually Kovarex took it as sort of a challenge to fix all the bugs that are reported on our forum (which works as a kind of bug tracker for us). Now there are last four. Actually this led us to a rather interesting conversation about the bugs and our approach towards them. We have always took the stance of fixing bugs first, adding features later. This is contrary to some very popular and successful indie games out there. So we naturally wondered whether it makes sense for us to keep doing this or whether we should try to move forward faster and build more features (there is plenty on the list). The conclusion was that it is important to find a balance. Crashes and bugs which prevent someone from playing or are annoying are not tolerable and must be fixed immediately. However we will be spending less time on tiny little bugs. Things like "if you are in the god mode and select a gun turret and pause the game and open the menu, then the description of the gun turret is broken". Obviously a made up example to demonstrate the point:). We are really grateful that people are reporting even the smallest bugs, it's just that we think we need to draw a line and don't be afraid to say "this is tolerable now and we will fix it later". This will allow us to spend more time with the new features and content. Which is what we really need at the moment. On the side note the work on the trailer is in the full speed. As mentioned before we have decided to go for a not so traditional approach without scene cuts. So the trailer will basically present an existing factory by sliding the camera from one place to another. The factory is done. Actually I took the factory from one of my freeplay games and adjusted it to fit the trailer's needs. Now we work on the script logic behind it. The script controls everything. Movement around the factory, speed, zoom, dynamic adjustments to particular machines, timing of actions, etc. This is also positive because it led us to extending the Lua API - for instance we have added routines to control the trains. These changes will be available in the 0.8 together with the trailer map and the script. There is still a lot of work ahead - finishing the script, balancing the speed and flow, polishing. After all this is done we will just press a button and capture the trailer from the screen. Lastly we will need a background music and sound. We haven't arranged anything yet, but Albert has some good contacts among sound professionals who could do this for us. There probably will be some spoiler discussions regarding the trailer on our forums soon. For the impatient there is a screen shot of a possible first trailer scene below (still needs some polishing - namely new terrain and additional decorative objects). There is a link on our forum to this blog post so feel free to share your comments. To finish with the fun fact there is now over 7000 commits in the Factorio project repository. And counting.
Hello, after a long long time the 0.9.8 was marked stable this week. There were no big ovations or cheering, just a quite "stable sticker exchange":) The bugs forum is not empty though, as someone would expect. Quite a few small issues remain, but for the sake of moving on we decided to put them to our backlog and mark the release as stable. However if some game crashing or very serious bugs are discovered in 0.9.8, we will make a hotfix. Oh, and the good thing is that we managed to break the streak (for now) of ever increasing number of bugfix releases (the 0.9 had 8 bugfix releases - the same as 0.8). The whole "programming department" has been fully commited to the work on multiplayer for a while now. The task divison for now is following: Michal - fully deterministic simulation. This is an absolute must, because all multiplayer peers will calculate the simulation themselves and only the player input (we call it input actions) will be exchanged over the network. Nice effect of having deterministic simulation will be having functional replays again (hmmm not really again because there have always been some bugs in them even when they were "working":)). Kuba - lower level network layer. This includes the connection management, packets management (we will be using UDP for all the communication) and eventually things like NAT punching to allow connections for peers behind NAT (few people have public IP address). Tomas - synchronization layer. This logic will take care of keeping the simulation state same for all the players in the game. This includes queing up the input actions, sending them out in batches (tick closures to other peers), requesting missing tick closures, etc. These things are absolute minimum necessary for our multiplayer implementation. However there is more to be done after this, things like: starting the game (the lobby), mechanism for a player joining already existing game, hiding the latency for the player (most of the time the actions for different players will not collide so we can act as if common actions - like moving the player around - were confirmed immediately) and more (see our battleplan whiteboard in one of the previous friday facts). There is a lot of work ahead, but the good news is that we have finally fully dived into it. We will keep you updated about the progress:) Albert has finished with most of the map trailer tweaks. Today we also did a first test with exporting the trailer using the new screenshot mechanism. We did this on Michal's computer which is way more powerful than mine (it does take a while to export 3600 screenshots). However there was this funky bug that parts of the terrain in the screenshots had strange, kind of inverted, colors. We have spent like half a day looking into this issue. Finally it turned out to be a problem in our custom optimized version of d3d drawing routine (this was happening on windows only). Spending hours in frustration hunting bugs (that are not even visible to the player in the end) happens more often than you would think, so game programming is not just about sitting back, playing video games and calling it "research" (but that is part of the job too:)) Anyway to give you an idea of what was going on you can see a visualization of the problem below. For better effect (and for us to easier analyze the problem) the corrupted regions of the image (here all of the terrain) are drawn with reddish overlay. Any idea for the picture title? Want to cheer us up for the multiplayer work? Or feel like laughing at us for taking so long with the trailer? Go to our forums.
The new GUI tileset (Albert) The process of the GUI re-design is moving slowly but steadily. By making new mockups, re-thinking old mechanics, and with the proper feedback from a different range of people, the parts are falling into place. I'm starting to feel very confident with the actual general contrast and font sizes. Also the conversion from high resolution to normal resolution is working just fine. These subjects are very important to move forward with. Below you can see a demo of the current state of the new GUI. Not all the widgets are shown yet, but this document is helping us a lot in order to define the future elements. Seeing the big picture makes it much easier to tweak them altogether with a better coherence and consistency, not to mention for testing any kind of font, specifically non-latin characters sets, a subject that I personally have not paid too much attention to yet. This document is being used also to create the general tileset and see how it behaves in the engine. This is a work in progress, and we are tweaking details constantly. Many things will change during the process. Overall here you can see a sneak peek of the Factorio GUI to come. I want to also mention that we are actually taking care of the 8% of the population who has some sort of color vision problems. This subject is still very new for us, but we are without a doubt researching solutions to different conditions.